# """
# 预备知识：python执行系统命令模块（subprocess）、IP地址处理模块（IPy）
# 输入内容：要检查的网段、子网掩码 (输入：192.168.0.0/24)
# 输出示例： 192.168.0.1已被使用
# 将输出结果放到文件
# 将可能存在异常的地方需要做相应处理
# """
import IPy
from pythonping import ping
import threading


def check_alive(ip1: str) -> None:
    message = ping(ip1)
    success_ping = "Reply"
    with open('reply.txt', 'a', encoding='utf-8') as f:
        if success_ping in str(message):
            f.write(f"{ip1}已被使用" + '\n')
            print(f"{ip1}已被使用")
        else:
            f.write(f"{ip1}没有ping通" + '\n')
            print(f"{ip1}没有ping通")


def process1() -> None:
    ip = IPy.IP("192.168.2.0/24")
    process = []
    ip = list(ip)
    ip.remove(ip[0])
    ip.remove(ip[-1])
    for i in ip:
        # target：在进程中被执行的函数
        # args：向被执行函数传递的参数
        p = threading.Thread(target=check_alive, args=(str(i),))
        process.append(p)

    [p.start() for p in process]
    [p.join() for p in process]


if __name__ == '__main__':
    process1()